import json
"""
使用集合操作：
    找出 Python 和数学都超过 85 分的学生
    找出至少有一门课不及格的学生
2. 数据持久化：
    将处理后的数据转换为 JSON 格式字符串
    将数据写入文件（可选）
3. 性能考虑：
    讨论在不同操作下（查询、修改、统计）哪种数据结构更高效
    比较列表、字典在不同场景下的优缺点
"""
students=[
    {"name":"张三","age":19,"scores":{"Python":85,"Math":76,"English":50}},
    {"name":"李四","age":20,"scores":{"Python":86,"Math":92,"English":55}},
    {"name":"王五","age":21,"scores":{"Python":95,"Math":68,"English":80}},
    {"name":"赵六","age":22,"scores":{"Python":90,"Math":88,"English":90}}
]

# Python和数学都超过85分的学生
print("Python和数学都超过85分的学生")
for student in students:
    if student["scores"]["Python"]>85 and student["scores"]["Math"]>85:
        print(student)

# 至少有一门课不及格的学生
print("至少有一门课不及格的学生")
for student in students:
    for score in student["scores"].values():
        if score<60:
            print(student)
            break

# 将students转换为JSON格式字符串
print("将students转换为JSON格式字符串")
# indent 美化输出，设置缩进为4
# ensure_ascii 处理非ASCII字符
# sort_keys 按键名排序
print(json.dumps(students,indent=4,ensure_ascii=False,sort_keys=True))

# 将students写入文件
file=open("students.json","w")
json.dump(students,file,indent=4,ensure_ascii=False,sort_keys=True)
file.close();
# 读取students.json中的数据
file=open("students.json","r")
print("读取students.json中的数据")
students=json.load(file)
print(students)